import os
import sys
import importlib.util

# 自定义的pythoncom钩子，解决PyInstaller打包问题

def find_pywin32_module(module_name):
    """尝试找到pywin32模块的实际位置"""
    # 尝试不同的可能路径
    possible_locations = [
        # 标准site-packages位置
        os.path.join(sys.base_prefix, 'Lib', 'site-packages', f'{module_name}.pyd'),
        # Python313特定的位置
        os.path.join(sys.base_prefix, 'Lib', 'site-packages', f'pywin32_system32', f'{module_name}.pyd'),
        # Windows系统目录
        os.path.join(os.environ.get('SystemRoot', 'C:\Windows'), 'System32', f'{module_name}313.dll'),
        os.path.join(os.environ.get('SystemRoot', 'C:\Windows'), 'System32', f'{module_name}*.dll'),
    ]
    
    # 遍历所有可能的位置，找到实际存在的文件
    for path in possible_locations:
        if '*' in path:
            # 处理通配符
            import glob
            matches = glob.glob(path)
            if matches:
                return matches[0]
        elif os.path.exists(path):
            return path
    
    # 如果找不到，返回一个合理的默认路径
    return os.path.join(sys.base_prefix, 'Lib', 'site-packages', f'{module_name}.pyd')

def get_pywin32_module_file_attribute(module_name):
    """返回pywin32模块的实际文件路径"""
    return find_pywin32_module(module_name)

# 替换PyInstaller的utils.hooks.get_pywin32_module_file_attribute函数
try:
    import PyInstaller.utils.hooks
    PyInstaller.utils.hooks.get_pywin32_module_file_attribute = get_pywin32_module_file_attribute
except:
    pass

# 定义hiddenimports
hiddenimports = ['pythoncom', 'pywintypes']

binaries = []
datas = []

# 尝试找到并添加pythoncom的二进制文件
try:
    pythoncom_path = find_pywin32_module('pythoncom')
    if os.path.exists(pythoncom_path):
        binaries.append((pythoncom_path, '.'))
except:
    pass